﻿
namespace NClass.StubLanguage
{
	public class StubStructure : Core.StructureType
	{
		public StubStructure() : base("NewStructure") { }

		public override Core.StructureType Clone()
		{
			return new StubStructure();
		}

		public override Core.SingleInharitanceType Base { get; set; }

		public override bool SupportsProperties { get { return true; } }

		public override bool SupportsEvents { get { return true; } }

		public override Core.AccessModifier DefaultMemberAccess { get { return Core.AccessModifier.Default; } }

		public override Core.Field AddField()
		{
			var member = new StubField(this);
			AddField(member);
			return member;
		}

		public override Core.Method AddMethod()
		{
			var member = new StubMethod(this);
			AddOperation(member);
			return member;
		}

		public override Core.Constructor AddConstructor()
		{
			var member = new StubConstructor(this);
			AddOperation(member);
			return member;
		}

		public override Core.Property AddProperty()
		{
			var member = new StubProperty(this);
			AddOperation(member);
			return member;
		}

		public override Core.Event AddEvent()
		{
			var member = new StubEvent(this);
			AddOperation(member);
			return member;
		}

		public override Core.AccessModifier DefaultAccess { get { return Core.AccessModifier.Default; } }

		public override Core.Language Language { get { return StubLanguage.Instance; } }

		public override string GetDeclaration()
		{
			return Name;
		}
	}
}
